<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>shark::HypervolumeCalculator Struct Reference</title>
<script type="text/javaScript" src="search/search.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.1/es5/tex-mml-chtml.js"></script>
<script src="../../mlstyle.js"></script>
<link href="../css/besser.css" rel="stylesheet" type="text/css"/>
</head>
<!-- pretty cool: each body gets an id tag which is the basename of the web page  -->
<!--              and allows for page-specific CSS. this is client-side scripted, -->
<!--              so the id will not yet show up in the served source code -->
<script type="text/javascript">
    jQuery(document).ready(function () {
        var url = jQuery(location).attr('href');
        var pname = url.substr(url.lastIndexOf("/")+1, url.lastIndexOf(".")-url.lastIndexOf("/")-1);
        jQuery('#this_url').html('<strong>' + pname + '</strong>');
        jQuery('body').attr('id', pname);
    });
</script>
<body>
    <div id="shark_old">
        <div id="wrap">
            <div id="header">
                <div id="site-name"><a href="../../sphinx_pages/build/html/index.html">Shark machine learning library</a></div>
                <ul id="nav">
                    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/installation.html">Installation</a>
                    </li>
		    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/tutorials/tutorials.html">Tutorials</a>
                    </li>
		    <li >
                        <a href="../../sphinx_pages/build/html/rest_sources/benchmark.html">Benchmarks</a>
                    </li>
                    <li class="active">
                        <a href="classes.html">Documentation</a>
                        <ul>
                            <li class="first"></li>
                            <li><a href="../../sphinx_pages/build/html/rest_sources/quickref/quickref.html">Quick references</a></li>
                            <li><a href="classes.html">Class list</a></li>
                            <li class="last"><a href="group__shark__globals.html">Global functions</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
<div id="doxywrapper">
<!--
    <div id="global_doxytitle">Doxygen<br>Documentation:</div>
-->
    <div id="navrow_wrapper">
<!-- Generated by Doxygen 1.9.8 -->
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceshark.html">shark</a></li><li class="navelem"><a class="el" href="structshark_1_1_hypervolume_calculator.html">HypervolumeCalculator</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="structshark_1_1_hypervolume_calculator-members.html">List of all members</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle"><div class="title">shark::HypervolumeCalculator Struct Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Frontend for hypervolume calculation algorithms in m dimensions.  
 <a href="structshark_1_1_hypervolume_calculator.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_hypervolume_calculator_8h_source.html">shark/Algorithms/DirectSearch/Operators/Hypervolume/HypervolumeCalculator.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a256ea9aa481429497727318af0aa69aa" id="r_a256ea9aa481429497727318af0aa69aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a256ea9aa481429497727318af0aa69aa">HypervolumeCalculator</a> ()</td></tr>
<tr class="memdesc:a256ea9aa481429497727318af0aa69aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default c'tor.  <br /></td></tr>
<tr class="separator:a256ea9aa481429497727318af0aa69aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ab83da90b82f39bc53e1da85fba9d75" id="r_a3ab83da90b82f39bc53e1da85fba9d75"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a3ab83da90b82f39bc53e1da85fba9d75">useApproximation</a> (bool useApproximation)</td></tr>
<tr class="memdesc:a3ab83da90b82f39bc53e1da85fba9d75"><td class="mdescLeft">&#160;</td><td class="mdescRight">True if the hypervolume approximation is to be used in dimensions &gt; 3.  <br /></td></tr>
<tr class="separator:a3ab83da90b82f39bc53e1da85fba9d75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ad379a89066eb0490896b3d2a2415b8" id="r_a3ad379a89066eb0490896b3d2a2415b8"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a3ad379a89066eb0490896b3d2a2415b8">approximationEpsilon</a> () const</td></tr>
<tr class="separator:a3ad379a89066eb0490896b3d2a2415b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a966d065ae8e3bd27a94c9f2edae7373b" id="r_a966d065ae8e3bd27a94c9f2edae7373b"><td class="memItemLeft" align="right" valign="top">double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a966d065ae8e3bd27a94c9f2edae7373b">approximationEpsilon</a> ()</td></tr>
<tr class="separator:a966d065ae8e3bd27a94c9f2edae7373b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a089a678e12c3772b6e50abab495bdcc6" id="r_a089a678e12c3772b6e50abab495bdcc6"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a089a678e12c3772b6e50abab495bdcc6">approximationDelta</a> () const</td></tr>
<tr class="separator:a089a678e12c3772b6e50abab495bdcc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58f7ff1cbe7c9ba7f7aa7562d11eabb9" id="r_a58f7ff1cbe7c9ba7f7aa7562d11eabb9"><td class="memItemLeft" align="right" valign="top">double &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a58f7ff1cbe7c9ba7f7aa7562d11eabb9">approximationDelta</a> ()</td></tr>
<tr class="separator:a58f7ff1cbe7c9ba7f7aa7562d11eabb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2bc35c52be301e83b4a2de2a5d8723e2" id="r_a2bc35c52be301e83b4a2de2a5d8723e2"><td class="memTemplParams" colspan="2">template&lt;typename Archive &gt; </td></tr>
<tr class="memitem:a2bc35c52be301e83b4a2de2a5d8723e2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a2bc35c52be301e83b4a2de2a5d8723e2">serialize</a> (Archive &amp;archive, const unsigned int version)</td></tr>
<tr class="separator:a2bc35c52be301e83b4a2de2a5d8723e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bc32696c337f742123983a70fccee92" id="r_a0bc32696c337f742123983a70fccee92"><td class="memTemplParams" colspan="2">template&lt;typename Points , typename <a class="el" href="_c_svm_linear_8cpp.html#ab106d665148183a2dc94dcf8716c9203">VectorType</a> &gt; </td></tr>
<tr class="memitem:a0bc32696c337f742123983a70fccee92"><td class="memTemplItemLeft" align="right" valign="top">double&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structshark_1_1_hypervolume_calculator.html#a0bc32696c337f742123983a70fccee92">operator()</a> (Points const &amp;points, <a class="el" href="_c_svm_linear_8cpp.html#ab106d665148183a2dc94dcf8716c9203">VectorType</a> const &amp;refPoint)</td></tr>
<tr class="memdesc:a0bc32696c337f742123983a70fccee92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes the algorithm.  <br /></td></tr>
<tr class="separator:a0bc32696c337f742123983a70fccee92"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Frontend for hypervolume calculation algorithms in m dimensions. </p>
<p>Depending on the dimensionality of the problem, one of the specialized algorithms is called. For large dimensionalities for which there are no specialized fast algorithms, either the exponential time or the approximated algorithm is called based on the choice of algorithm </p>

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00046">46</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a256ea9aa481429497727318af0aa69aa" name="a256ea9aa481429497727318af0aa69aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a256ea9aa481429497727318af0aa69aa">&#9670;&#160;</a></span>HypervolumeCalculator()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">shark::HypervolumeCalculator::HypervolumeCalculator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Default c'tor. </p>

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00049">49</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a58f7ff1cbe7c9ba7f7aa7562d11eabb9" name="a58f7ff1cbe7c9ba7f7aa7562d11eabb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58f7ff1cbe7c9ba7f7aa7562d11eabb9">&#9670;&#160;</a></span>approximationDelta() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double &amp; shark::HypervolumeCalculator::approximationDelta </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00067">67</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

<p class="reference">References <a class="el" href="structshark_1_1_hypervolume_approximator.html#abfeab3928eff47a2869c542b0ed020dc">shark::HypervolumeApproximator::delta()</a>.</p>

</div>
</div>
<a id="a089a678e12c3772b6e50abab495bdcc6" name="a089a678e12c3772b6e50abab495bdcc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a089a678e12c3772b6e50abab495bdcc6">&#9670;&#160;</a></span>approximationDelta() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double shark::HypervolumeCalculator::approximationDelta </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00063">63</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

<p class="reference">References <a class="el" href="structshark_1_1_hypervolume_approximator.html#abfeab3928eff47a2869c542b0ed020dc">shark::HypervolumeApproximator::delta()</a>.</p>

</div>
</div>
<a id="a966d065ae8e3bd27a94c9f2edae7373b" name="a966d065ae8e3bd27a94c9f2edae7373b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a966d065ae8e3bd27a94c9f2edae7373b">&#9670;&#160;</a></span>approximationEpsilon() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double &amp; shark::HypervolumeCalculator::approximationEpsilon </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00059">59</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

<p class="reference">References <a class="el" href="structshark_1_1_hypervolume_approximator.html#a87334159cdfae43c729c8dd02b738f1c">shark::HypervolumeApproximator::epsilon()</a>.</p>

</div>
</div>
<a id="a3ad379a89066eb0490896b3d2a2415b8" name="a3ad379a89066eb0490896b3d2a2415b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ad379a89066eb0490896b3d2a2415b8">&#9670;&#160;</a></span>approximationEpsilon() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double shark::HypervolumeCalculator::approximationEpsilon </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00056">56</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

<p class="reference">References <a class="el" href="structshark_1_1_hypervolume_approximator.html#a87334159cdfae43c729c8dd02b738f1c">shark::HypervolumeApproximator::epsilon()</a>.</p>

</div>
</div>
<a id="a0bc32696c337f742123983a70fccee92" name="a0bc32696c337f742123983a70fccee92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bc32696c337f742123983a70fccee92">&#9670;&#160;</a></span>operator()()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Points , typename <a class="el" href="_c_svm_linear_8cpp.html#ab106d665148183a2dc94dcf8716c9203">VectorType</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double shark::HypervolumeCalculator::operator() </td>
          <td>(</td>
          <td class="paramtype">Points const &amp;&#160;</td>
          <td class="paramname"><em>points</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="_c_svm_linear_8cpp.html#ab106d665148183a2dc94dcf8716c9203">VectorType</a> const &amp;&#160;</td>
          <td class="paramname"><em>refPoint</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Executes the algorithm. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">points</td><td>The set \(S\) of points for which the following assumption needs to hold: \(\forall s \in S: \lnot \exists s&#39; \in S: s&#39; \preceq s \) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">refPoint</td><td>The reference point \(\vec{r} \in \mathbb{R}^n\) for the hypervolume calculation, needs to fulfill: \( \forall s \in S: s \preceq \vec{r}\). . </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00081">81</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

<p class="reference">References <a class="el" href="_exception_8h.html#a42a6a50e4d06c00d60fbca5333f40768">SIZE_CHECK</a>.</p>

</div>
</div>
<a id="a2bc35c52be301e83b4a2de2a5d8723e2" name="a2bc35c52be301e83b4a2de2a5d8723e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bc35c52be301e83b4a2de2a5d8723e2">&#9670;&#160;</a></span>serialize()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Archive &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void shark::HypervolumeCalculator::serialize </td>
          <td>(</td>
          <td class="paramtype">Archive &amp;&#160;</td>
          <td class="paramname"><em>archive</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned int&#160;</td>
          <td class="paramname"><em>version</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00072">72</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

</div>
</div>
<a id="a3ab83da90b82f39bc53e1da85fba9d75" name="a3ab83da90b82f39bc53e1da85fba9d75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ab83da90b82f39bc53e1da85fba9d75">&#9670;&#160;</a></span>useApproximation()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void shark::HypervolumeCalculator::useApproximation </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useApproximation</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>True if the hypervolume approximation is to be used in dimensions &gt; 3. </p>

<p class="definition">Definition at line <a class="el" href="_hypervolume_calculator_8h_source.html#l00052">52</a> of file <a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a>.</p>

<p class="reference">References <a class="el" href="structshark_1_1_hypervolume_calculator.html#a3ab83da90b82f39bc53e1da85fba9d75">useApproximation()</a>.</p>

<p class="reference">Referenced by <a class="el" href="structshark_1_1_hypervolume_calculator.html#a3ab83da90b82f39bc53e1da85fba9d75">useApproximation()</a>.</p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>include/shark/Algorithms/DirectSearch/Operators/Hypervolume/<a class="el" href="_hypervolume_calculator_8h_source.html">HypervolumeCalculator.h</a></li>
</ul>
</div><!-- contents -->
</div>
</body>
</html>
